2025-09-01
Hvad er jeres erfaring (hvis I har nogen)?
Hvordan forstår i “kodning”; hvorfor bruger vi ikke bare Excel eller lign.?
Hvis I har erfaring; er det en god erfaring? Hvordan lærte i det bedst; hvad var svært?
Når Excel kommer til kort:
Analysere 100.000-vis af rækker data.
Gentage den samme analyse hver [dag/måned/år] med nye data.
Dokumentere præcist, hvad vi har gjort, så en kollega kan gentage det.
Kombinere data fra [mange] forskellige kilder.
Lave avancerede statistiske modeller.
Tænk på kodning som et meget detaljeret opskrift. Så fremfor en abstract “bland ingredienserne” (Excel; peg-og-klik), skriver vi:
Hvordan fik du resultatet?
monthly_average = data.groupby('month')['sales'].mean()
Alle trin i koden er en komplet log over hvad du har gjort ved dataen for at få dit output.
Når næste års data kommer, ændres blot url = "https://...." til den nye data og det hele køres igen.
Den samme kode, der arbejder med 100 rækker, kan håndtere millioner af rækker uden problemer. (Flere rækker betyder dog logisk nok mere computerkraft og tid)
Python har tusindvis af specialiserede “værktøjskasser” (biblioteker) til alt fra grundlæggende statistik og datahåndtering til machine learning og kunstig intelligens.
Skriv koden én gang, kør den hver dag/uge/måned/år automatisk.
Kodning skal være utvetydigt og logisk struktureret for at maskine “forstår” os.
I skal på kurset oparbejde en algoritmisk tænkning.
Spg.: Hvad tænker I når i hører ordet Algoritme?
Algoritmisk tænkning:
(Relativt) simpelt.
Stor brugerbase.
Omfattende biblioteker til alle forskningsområder.
“Jeg vil finde gennemsnittet af mine salgstal”
“Læg alle tallene sammen, divider med antallet af tal”
\[ \bar{x} = \frac{x_1 + x_2 + x_3 + \ldots + x_n}{n} = \frac{\sum_{i=1}^{n} x_i}{n} \]
Hvad har vi implementeret her:
\(\text{total} = \sum_{i=1}^{n} \text{sales}_i\)
\(\text{gennemsnit} = \frac{\text{total}}{n} = \frac{\sum_{i=1}^{n} \text{sales}_i}{n}\), Hvor \(n\) er antallet af salgstal i datasættet.
Udskriv resultatet
Maskinen forstår ikke Python (?!)
Computeren forstår kun maskinkode. Hvilket er lavniveau instruktioner bestående af \(1\)-taller og \(0\)’er (binary), som CPU’en kan arbejde med.
Python fortolkeren oversætter altså koden til noget som maskinen kan forstå: og Python er muligt nemmere at læse for mennesker end maskinkode.
Denne oversættelse forgår i en mellemform (assembly-sprog), der er meget mere besværligt at arbejde med end Python, a la:
LOAD data
ADD all values
DIVIDE by count
STORE result
Som I maskinkode kunne se således ud:
10110000 01100001
Process:
Høj-niveau:
total = sum(data)
gennemsnit = total / len(data)
Mellem-niveau:
LOAD data
ADD all values
DIVIDE by count
STORE result
Lav-niveau:
10110000 01100001
“Kan du hente en kop kaffen?”
Vi forstår implicit: Gå ud i køkkenet, tag en kop, hæld kaffe i koppen, kom tilbage.
Oversat til eksplicitte instruktioner:
cup = get_cup_from_kitchen()coffee = pour_coffee(cup)return coffee_to_desk(cup)Hvilke salg er større end 10.000 (DKK)?
\[ \begin{aligned} \textbf{for hvert } \text{tal} ~ i ~ \text{salgstal}: \\ \quad \textbf{hvis } \text{tal} ~større~end~ 10000: \\ \qquad \textbf{udskriv} ~ \text{tal} ~~ \end{aligned} \]
Bemærk: data har virket flere steder i vores kode, selvom vi kun har indlæst den én gang.
pris = 100
moms = pris * 0.25
total = pris + moms
print(total)
Tag værdien 100 og gem det i hukommelseslokation kaldet ‘pris’
Tag værdien fra ‘pris’, gang med 0.25, gem resultatet som ‘moms’
Maskinen er ligeglad med om navne giver mening. Vi bruger meningsfulde navne for at forstå vores egen kode.
Defination af funktioner svarer til at lære maskinen en ny “kommando”. Nu kan vi sige beregn_moms(tal) og maskinen ved præcist, hvad den skal gøre, fordi vi har defineret hver eneste trin.
Maskiner er utroligt dumme men utroligt hurtige og pålidelige. De kan kun gøre simple ting som:
Men de kan gøre disse simple ting milliarder af gange per sekund uden fejl.
Kodningens kunst ligger i at bryde komplekse menneskelige problemer ned til disse simple operationer og derefter komponere dem sammen til kraftfulde løsninger.
Eks.: Digitale metoder til kriminalitetsforståelse
Vi flytter fra små, lokale undersøgelser til analyser af massive datasæt der kan afsløre mønstre, vi aldrig kunne se før.
Traditionel tilgang: En kriminolog interviewer 50 tidligere indsatte over 6 måneder for at forstå recidiv-mønstre.
Computational tilgang: Analyser alle \(n\) millioner straffesager fra de sidste 20 år og identificer risikofaktorer for tilbagefald.
HPC: At bruge mange kraftige computere, som er koblet sammen i store klynger (clusters), til at løse komplekse og krævende opgaver.
Cloud computing: Adgang til computerressourcer (fx programmer, lagerplads og regnekraft) via internettet, fremfor at have det hele installeret på sin egen computer.
UCloud: En dansk platform udviklet af Syddansk Universitet (SDU) og Aalborg Universitet (AAU). Den gør det muligt for forskere, undervisere og studerende at udnytte HPC-ressourcer på en enkel måde.
Køre programmer uden installation: UCloud tilbyder et bibliotek af applikationer (fx RStudio, Jupyter Notebooks, MATLAB, Stata, Python, osv.), som kan startes direkte i browseren.
Brug HPC-ressourcer: Når du starter en applikation, vælger du selv hvor meget regnekraft (CPU, GPU, RAM) du har brug for. Du arbejder stadig i en browser, men beregningen sker på en HPC-klynge.
Datahåndtering: Du kan uploade, downloade og organisere dine data direkte i UCloud. Der er også muligheder for sikker deling af data med kolleger.
Samarbejde: Projekter i UCloud kan deles med andre brugere, så man kan arbejde på de samme data og applikationer.
Log ind med WAYF (din universitetslogin).
Vælg et projekt: Al arbejde i UCloud foregår i projekter, hvor du kan organisere applikationer, data og brugere.
Start en applikation: Fx Jupyter, og vælg hvor meget regnekraft du skal bruge.
Arbejd som normalt i applikationen, men med adgang til langt kraftigere ressourcer end din egen computer.
Gem og del resultater: alt bliver gemt i dit projekt, og kan deles med andre eller eksporteres til lokal computer.